home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / T-COMAL Today / (k)te.d64 / src.compactor.14 < prev    next >
Text File  |  2009-01-03  |  2KB  |  166 lines

  1. ; COMPILE/UNCOMPILE PICTURES
  2. ; BY DAVID STIDOLPH
  3. ;
  4. ; COMPRESSOR/DECOMPRESSOR
  5. ; FROM ARTICLE BY CHRIS ZAMARA
  6. ;      TRANSACTOR -- VOLUME 6, ISSUE 4
  7. ;                    JAN. 1986
  8. ;
  9. ; CODE FOR COMAL, WRITTEN BY
  10. ;                 DAVID STIDOLPH
  11. ;
  12. CHKIN = $FFC6
  13. CHKOUT = $FFC9
  14. CHRIN = $FFCF
  15. CHROUT = $FFD2
  16. CLRCHN = $FFCC
  17. POINT = $A8
  18.  * = $C000
  19.  JMP LOADCD
  20.  JMP SAVECD
  21. FILNUM .BYT 0
  22. BYTE .BYT 0
  23. OLDBYT .BYT 0
  24. LAST .BYT 0
  25. NUM .BYT 0
  26. ;
  27. LOADCD LDX FILNUM
  28.  JSR CHKIN
  29.  LDA #$00
  30.  STA POINT
  31.  LDA #$E0
  32.  STA POINT+1
  33. ;
  34. MAINLD JSR CHRIN
  35.  CMP #254
  36.  BNE NORMAL
  37.  JSR CHRIN
  38.  STA BYTE
  39.  JSR CHRIN
  40.  STA NUM
  41.  LDY #00
  42. NEXT LDA BYTE
  43.  STA (POINT),Y
  44.  JSR INCRCV
  45. DECNUM DEC NUM
  46.  BNE NEXT
  47.  JMP MAINLD
  48. ;
  49. NORMAL LDY #00
  50.  STA (POINT),Y
  51.  JSR INCRCV
  52.  JMP MAINLD
  53. ;
  54. INCRCV INC POINT
  55.  BNE NOTR1
  56.  INC POINT+1
  57. NOTR1 LDA POINT+1
  58.  CMP #255
  59.  BNE NTENDR
  60.  LDA POINT
  61.  CMP #64
  62.  BNE NTENDR
  63.  PLA
  64.  PLA
  65.  JMP CLRCHN
  66. NTENDR RTS
  67. ;
  68. ; COMPACTOR FOR COMAL 2.0
  69. ;
  70. SAVECD LDX FILNUM
  71.  JSR CHKOUT
  72. ;
  73.  LDA #$00
  74.  STA POINT
  75.  LDA #$E0
  76.  STA POINT+1
  77. ;
  78.  SEI
  79.  LDA 1
  80.  AND #%11111101
  81.  STA 1
  82.  LDY #0
  83.  LDA (POINT),Y
  84.  STA BYTE
  85.  LDA 1
  86.  ORA #%00000010
  87.  STA 1
  88.  CLI
  89.  LDA #1
  90.  STA POINT
  91.  STA NUM
  92. ;
  93. SAVEMN LDY #00
  94.  LDA BYTE
  95.  STA OLDBYT
  96.  SEI
  97.  LDA 1
  98.  AND #%11111101
  99.  STA 1
  100.  LDA (POINT),Y
  101.  STA BYTE
  102.  LDA 1
  103.  ORA #%00000010
  104.  STA 1
  105.  CLI
  106.  JSR PUTOUT
  107.  INC POINT
  108.  BNE NOTNOW
  109.  INC POINT+1
  110. NOTNOW LDA POINT+1
  111.  CMP #$FF
  112.  BNE SAVEMN
  113.  LDA POINT
  114.  CMP #64
  115.  BNE SAVEMN
  116. ;
  117. ; END COMPRESS
  118. ;
  119.  JSR NMATCH
  120. FINISH JMP CLRCHN
  121. ;
  122. PUTOUT LDA BYTE
  123.  CMP OLDBYT
  124.  BNE NMATCH
  125.  INC NUM
  126.  BNE RETRN
  127.  DEC NUM
  128.  JMP NOT2
  129. RETRN RTS
  130. ;
  131. NMATCH LDA NUM
  132.  CMP #1
  133.  BNE NOT1
  134.  JSR SEND
  135.  RTS
  136. ;
  137. NOT1 CMP #2
  138.  BNE NOT2
  139.  JSR SEND
  140.  JSR SEND
  141.  LDA #1
  142.  STA NUM
  143.  RTS
  144. ;
  145. NOT2 LDA #254
  146.  JSR CHROUT
  147.  LDA OLDBYT
  148.  JSR CHROUT
  149.  LDA NUM
  150.  JSR CHROUT
  151.  LDA #1
  152.  STA NUM
  153.  RTS
  154. ;
  155. SEND LDA OLDBYT
  156.  CMP #254
  157.  BNE NOT254
  158.  JSR CHROUT
  159.  LDA #254
  160.  JSR CHROUT
  161.  LDA #1
  162. NOT254 JSR CHROUT
  163.  RTS
  164. ;
  165. END .END
  166.